package com.haixiaoke.saas.common.enums;

import lombok.Getter;
import lombok.Setter;

/**
 * 账单状态枚举
 *
 * @Author qixi
 * @Date 2024-5-29
 **/
public enum BillStateEnum {

    BILL_STATE_UNPAID("1", "未支付", "billState", "bill_state"),
    BILL_STATE_PAID("2", "已结清", "billState", "bill_state"),
    BILL_STATE_OVERDUE("3", "已逾期", "billState", "bill_state"),
    BILL_STATE_LOGOUT("4", "注销", "billState", "bill_state"),


    BILL_METHOD_ONLINE("1", "线上支付", "billMethod", "bill_method"),
    BILL_METHOD_OFFLINE("2", "线下支付", "billMethod", "bill_method"),


    /**
     * 约金生成状态: 1不收取 2收取
     */
    PENALTY_STATES_NOT_COLLECT("1", "不收取", "penaltyStates", "penalty_states"),
    PENALTY_STATES_COLLECT("2", "收取", "penaltyStates", "penalty_states"),


    /**
     * 账单启用状态 1启用 2禁用
     */
    BILL_ENABLE_STATES_ON("1", "启用", "billEnableStates", "bill_enable_states"),
    BILL_ENABLE_STATES_OFF("2", "禁用", "billEnableStates", "bill_enable_states"),


    /**
     * 账单生效状态 1已生效 2未生效
     */
    BILL_EFFECTIVE_STATES_ON("1", "已生效", "billEnableStates", "bill_effective_states"),
    BILL_EFFECTIVE_STATES_OFF("2", "未生效", "billEnableStates", "bill_effective_states"),


    /**
     * 账单类型: 1押金账单 2费用账单
     */
    HOUSE_BILL_TYPE_DEPOSIT("1", "押金账单", "billType", "bill_type"),
    HOUSE_BILL_TYPE_EXPENSE("2", "费用账单", "billType", "bill_type"),

    /**
     * 账单收费项目类型: 1其他费用 2违约金
     */
    BILL_ITEM_TYPE_OTHER_COST("1", "其他费用", "itemType", "item_type"),
    BILL_ITEM_TYPE_PENALTY("2", "违约金", "itemType", "item_type"),


    /**
     * 项目收费方式 1一次付清 2随租金付
     */
    CHARGE_METHOD_FULL_PAYMENT("1", "一次性付清","chargeMethod","charge_method"),
    CHARGE_METHOD_PAYMENT_WITH_RENT("2", "随租金付","chargeMethod","charge_method");






    @Getter
    @Setter
    String value;

    @Getter
    @Setter
    String label;

    @Getter
    @Setter
    String type;

    @Getter
    @Setter
    String otherType;


    BillStateEnum(String value, String label, String type, String otherType) {
        this.value = value;
        this.label = label;
        this.type = type;
        this.otherType = otherType;
    }
}
